/*
 * 
 * Libman
 * 
 * Daniel Kaufmann, Martin Lang, Simon Moosbrugger,
 * Stefan Mayer, Stephan Halbeisen
 * 
 */
package application.server;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.server.ServerNotActiveException;

import application.exceptions.ClientNotFoundException;
import application.exceptions.DatabaseException;
import application.exceptions.ExemplarAlreadyLend;
import application.exceptions.ExemplarNotFoundException;
import application.exceptions.InsufficientClientRightsException;
import application.exceptions.SessionException;

/**
 * The Interface ExemplarLoanRemote.
 */
public interface ExemplarLoanRemote extends Remote {
	
	/**
	 * Loan medium.
	 * 
	 * @param exemplarId
	 *            the exemplar id
	 * @param clientId
	 *            the client id
	 * @throws RemoteException
	 *             the remote exception
	 * @throws ClientNotFoundException
	 *             the client not found exception
	 * @throws ExemplarNotFoundException
	 *             the exemplar not found exception
	 * @throws ExemplarAlreadyLend
	 *             the exemplar already lend
	 * @throws DatabaseException
	 *             the database exception
	 */
	public void loanMedium(String sessionId, int exemplarId, int clientId)
			throws RemoteException, ClientNotFoundException,
			ExemplarNotFoundException, ExemplarAlreadyLend, DatabaseException, SessionException, InsufficientClientRightsException, ServerNotActiveException ;
}
